/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package xq.gwt.ui.widgets.property;

import com.smartgwt.client.types.DateDisplayFormat;
import com.smartgwt.client.widgets.form.fields.DateItem;
import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
import com.smartgwt.client.widgets.form.fields.events.ChangedHandler;

import java.util.Date;

import xq.gwt.mvc.controller.DatePropertyController;
import xq.gwt.mvc.model.DatePropertyModel;
import xq.gwt.mvc.view.DatePropertyView;

/**
 *
 * @author admin
 */
public class DateItemPropertyPresenter extends FormItemPropertyPresenter implements DatePropertyView{
    
	protected DateItem dateItem;
    protected DatePropertyController controller;    

    public DateItemPropertyPresenter(DateItem dateItem){        
    	this.dateItem = dateItem;
    	formItem = dateItem;
        init();
    }
    
    public DateItemPropertyPresenter(){        
    	this.dateItem = new DateItem();
    	formItem = dateItem;
        init();
    }
    
    protected void init(){
    	dateItem.addChangedHandler(new ChangedHandler() {									
			@Override
			public void onChanged(ChangedEvent event) {				
				notifyViewChangedListeners();				
			}
		});
    	dateItem.setUseTextField(true);        
        dateItem.setDateFormatter(DateDisplayFormat.TOEUROPEANSHORTDATE);
    	controller = new DatePropertyController(this);
    	super.controller = controller;
    }
    
    public void setDate(Date date) {
        dateItem.setValue(date);
    }

    public Date getDate() {
        Date date = null;
        try {
        	clearError();
			date = (Date)dateItem.getValue(); 
		} catch (Exception e) {
			setError(e.toString());
		}
    	return date;
    }


    public void setModel(DatePropertyModel model){
    	controller.setPropertyModel(model);
    }

	public DateItem getDateItem() {
		return dateItem;
	}

    
    
    
}
